package org.cip.esymons.general.util;

//import javax.activation.*;
import java.io.File;
import javax.mail.*; 
import javax.mail.internet.*;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.util.ByteArrayDataSource;


/**
 *
 * @author Lizardo Rios
 */

public class EnviaEmail {
	
	public static String envia(String from, String to, String title, String text, String logo) {
		// Si el servidor SMTP est� en su PC
		//String host = "centosx-applications";
                String host = "192.168.2.53";
                String port = "25";
		String exito = null;
		
		Properties prop = new Properties();
		prop.put("mail.smtp.host", host);
                prop.put("mail.smtp.port", port);
		prop.put("mail.smtp.auth", "true"); 
		
		try { 
			SMTPAuthentication usuario = new SMTPAuthentication(); 
			Session session = Session.getInstance(prop, usuario); 
//			Message msg = getMessage(session, from, to, title, text);

            Message mensaje = new MimeMessage(session);

            mensaje.setFrom(new InternetAddress(from,"CIP - La Libertad"));
            mensaje.setSubject(title);
            mensaje.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

            Multipart mp = new MimeMultipart();

            //texto del mensaje
            BodyPart texto = new MimeBodyPart();
            texto.setText(text);
            mp.addBodyPart(texto);

            //adjuntar imagen CIP Logo Correo
            BodyPart adjunto2 = new MimeBodyPart();
            //File path = new File("D:/esymons/Codigo/org.cip.esymons/org.cip.esymons.general/web/img/LogoCorreo.gif");
            File path = new File(logo);
            DataSource source = new FileDataSource(path);
            adjunto2.setDataHandler(new DataHandler(source));

            //adjuntamos el logo del Colegio
            adjunto2.setFileName(path.getName());
            mp.addBodyPart(adjunto2);
            mensaje.setContent(mp);
//            mensaje.setContent(mp);
	    Transport.send(mensaje);
		
		} catch (Exception ex) { 
			exito = ex.getMessage();
		}
		
		return exito;
	}

        
        public static String enviaAdjunto(String from, String to, String title, String text,String adjunto, String logo) {
        // Si el servidor SMTP est� en su PC
        //String host = "centosx-applications";
        String host = "192.168.2.53";
        String port = "25";
        String exito = null;

        Properties prop = new Properties();
        prop.put("mail.smtp.host", host);
        prop.put("mail.smtp.port", port);
        prop.put("mail.smtp.auth", "true");

        try {
                SMTPAuthentication usuario = new SMTPAuthentication();
                Session session = Session.getInstance(prop,usuario);
//			Message msg = getMessage(session, from, to, title, text);

            Message mensaje = new MimeMessage(session);
            
            mensaje.setFrom(new InternetAddress(from,"CIP - La Libertad"));
            mensaje.setSubject(title);
            mensaje.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            
            Multipart mp = new MimeMultipart();

            //texto del mensaje
            BodyPart texto = new MimeBodyPart();
            texto.setText(text);
            mp.addBodyPart(texto);

            // adjuntar el primer fichero de tipo txt
            MimeBodyPart adjunto1 = new MimeBodyPart();
            adjunto1.attachFile(adjunto);//"C:/Users/ADMINISTRADOR/Desktop/manualreportes.pdf");
            mp.addBodyPart(adjunto1);

            //adjuntar el segundo fichero
            BodyPart adjunto2 = new MimeBodyPart();
            File path = new File(logo);
            DataSource source = new FileDataSource(path);
            adjunto2.setDataHandler(new DataHandler(source));

            //nombre de fichero que aparecera en el adjunto
            adjunto2.setFileName(path.getName());
            mp.addBodyPart(adjunto2);
            mensaje.setContent(mp);

            Transport.send(mensaje);

            } catch (Exception ex) {
                    exito = ex.getMessage();
            }

            return exito;
	}

        public static String enviaFile(String from, String to, String title, String text,File file, String logo) {
        // Si el servidor SMTP est� en su PC
        //String host = "centosx-applications";
        String host = "192.168.2.53";
        String port = "25";
        String exito = null;

        Properties prop = new Properties();
        prop.put("mail.smtp.host", host);
        prop.put("mail.smtp.port", port);
        prop.put("mail.smtp.auth", "true");

        java.io.InputStream fin=null;

        try {
                SMTPAuthentication usuario = new SMTPAuthentication();
                Session session = Session.getInstance(prop,usuario);
//			Message msg = getMessage(session, from, to, title, text);

            Message mensaje = new MimeMessage(session);

            mensaje.setFrom(new InternetAddress(from,"CIP - La Libertad"));
            mensaje.setSubject(title);
            mensaje.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

            Multipart mp = new MimeMultipart();

            //texto del mensaje
            BodyPart texto = new MimeBodyPart();
            texto.setText(text);
            mp.addBodyPart(texto);

            javax.activation.DataSource ds = new ByteArrayDataSource(fin,
"application/pdf");
            // adjuntar el primer fichero de tipo txt
            MimeBodyPart adjunto1 = new MimeBodyPart();
//            adjunto1.attachFile(adjunto);//"C:/Users/ADMINISTRADOR/Desktop/manualreportes.pdf");
            adjunto1.setDataHandler(new DataHandler(ds));
            adjunto1.setFileName(file.getName());
            mp.addBodyPart(adjunto1);
            mp.addBodyPart(adjunto1);

            //adjuntar el segundo fichero
            BodyPart adjunto2 = new MimeBodyPart();
            File path = new File(logo);
            DataSource source = new FileDataSource(path);
            adjunto2.setDataHandler(new DataHandler(source));

            //nombre de fichero que aparecera en el adjunto
            adjunto2.setFileName(path.getName());
            mp.addBodyPart(adjunto2);
            mensaje.setContent(mp);

            Transport.send(mensaje);

            } catch (Exception ex) {
                    exito = ex.getMessage();
            }

            return exito;
	}

	private static MimeMessage getMessage(Session session, String from, 
					String to, String title, String text) {
		try {
			MimeMessage msg = new MimeMessage(session); 
			msg.setSubject(title);
			msg.setText(text);
			msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
			msg.setFrom(new InternetAddress(from, from));
			
			return msg;
		
		} catch (java.io.UnsupportedEncodingException ex) {
			System.out.println (ex.getMessage());
			return null;
		} catch (MessagingException ex) {
			System.out.println(ex.getMessage());
			return null;
		} 
	}
}


class SMTPAuthentication extends javax.mail.Authenticator {
    @Override
	public PasswordAuthentication getPasswordAuthentication() {
		// usuario del servidor SMTP
		//String username = "robot@cip-trujillo.org";//"victor";
		String username = "mailrobot@cip-trujillo.org";//"victor";
		String password = "mailrobot";
		
		return new PasswordAuthentication(username, password);
	}


    
}
